package day1;

import java.util.Scanner;

import org.junit.Test;

public class HelloWorld {
	// main方法是java的入口方式
	// main
	public static void main(String[] args) {
		// 在控制台里面打印信息
		// syso
		System.out.println("HelloWold!");
		
		// =：是把右边这个值赋给左边这个变量，判断相等用"=="
		// variable 变量：只要是这个类型的值，都可以赋给这个变量
		int age = 23;
		age = 25;
		// Ctrl+/
		// 常量
		final double pi = 3.14;
		
		
	}
	
	@Test
	public void test() {
		// syst:trace
		System.out.println("HelloWorld.test()");
		boolean b1 = true;
		boolean b2 = false;
		
		int age1 = 23;
		byte age2 = 23;
		// byte age3 = 255;一个字节
		byte age4 = -128;
		
		
		char ch1 = 'a';// 两个字节
		char cha2 = 20067;
		int i = 20034;
		System.out.println(cha2);
	}
	
	
	@Test
	public void test2() {
		char ch = 'a';// 在编码表里对应97
		System.out.println(ch);
		// 整数默认是int
		// 从小到大自动类型变换
		System.out.println(ch + 1);
		// 从大到小需要强制类型转换
		System.out.println((char)(ch + 1));// b
		// 从大到小需要强制类型转换，可能会丢失精度（装水的杯子大小不一样）
		System.out.println((int)3.14);
	}
	
	
	@Test
	public void test3() {
		double num1 = 3.0;
		int num2 = 5;
		System.out.println(num1 + num2);
		//int result = num1 + num2;
		//System.out.println(result);
		System.out.println(8 / 2);// 4
		System.out.println(8 % 2);// 0
	}
	
	
	@Test
	public void test4() {
		int i = 1;
		i = i + 1;
		i++;
		++i;
		System.out.println(i);// 4
		System.out.println(i++);// 先输出后运算 4
		System.out.println(++i);// 先运算后输出  6
		System.out.println(i++ + ++i);// 14
		System.out.println(++i + i++);// 18
	}
	
	
	
	@Test
	public void test5() {
		int age1 = 23;
		int age2 = 24;
		boolean bool = age1 > age2;
		System.out.println(bool);
		System.out.println(5 >= 5);
		System.out.println(3 != 4);// （!非） false
	}
	
	
	@Test
	public void test6() {
		int num1 = 67;
		int num2 = 456;
		boolean bool = (num1 >= 70) || (num2 >= 425);// ||或(true)    &&与(false)
		System.out.println(bool);
		System.out.println(!bool);
		
	}
	
	
	@Test
	public void test7() {
		int num1 = 3;
		int num2 = 5;
		// &&短路
		System.out.println(num1 < 0 && num1++ < num2);// false
		System.out.println(num1);// 3
		System.out.println(num2);// 5
		System.out.println(num1 > 0 || num1++ < num2);// true
		System.out.println(num1);// 3
		System.out.println(num2);// 5
	}
	
	@Test
	public void test8() {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入成绩");
		int score = scanner.nextInt();
		//int score 98;
		if (score < 0 || score > 100) {
			System.out.println("您输入的成绩非法");
			return;
		}// 卫语句
		
		if (score >= 90 && score <= 100) {
			System.out.println("优秀");
		} else if (score >= 80 && score < 90) {
			System.out.println("良好");
		} else if (score >= 70 && score < 80) {
			System.out.println("一般");
		} else if (score >= 60 && score < 70) {
			System.out.println("合格");
		} else {
			System.out.println("不合格");
		}
	}
	
	@Test
	public void test9() {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入年份");
		int year = scanner.nextInt();
		if ((year % 4 == 0 && year % 100 !=0) || year % 400 ==0) {
			System.out.println(year + "是闰年");
		} else {
			System.out.println(year + "不是闰年");
		}		
	}
	
	
	@Test
	public void test10() {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入第一个数");
		int num1 = scanner.nextInt();
		System.out.println("请输入第二个数");
		int num2 = scanner.nextInt();
//		int num1 = 3;
//		int num2 = 5;
		System.out.println("num1:" + num1);
		System.out.println("num2:" + num2);
		int temp = num1;
		num1 = num2;
		num2 = temp;
		System.out.println("num1:" + num1);
		System.out.println("num2:" + num2);
	}
	
	
//	编写一个收银台收款程序，if
//	定义输入----单价、数量、金额
//	定义输出----应收金额、找零
//	使用double类型变量 scanner.nextDouble();
//	2.2、当总价>=500时候打八折
//	2.3、考虑程序出现异常的情况，如：收款金额小于应收金额
//	      若收款金额大于等于应收金额，则计算找零后输出
//	      若收款金额小于应收金额，输出错误信息。
	
	
	@Test
	public void test11() {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入单价");
		double unit = scanner.nextDouble();
		if (unit <= 0 ) {
			System.out.println("其输入合法单价");
			return;// 退出这个方法，后面的代码都不执行
		}
		System.out.println("请输入数量");
		int num = scanner.nextInt();
		if (num <= 0 ) {
			System.out.println("其输入合法数量");
			return;// 退出这个方法，后面的代码都不执行
		}
		System.out.println("请输入支付金额");
		double pay = scanner.nextDouble();
		double price = unit * num;
		if (price >= 500) {
			price = 0.8 * price;
		}
		if (pay > price) {
			System.out.println("购买成功！共收取:" + pay + " " +"应收:" + price + " " + "找零:" + (pay - price));
		} else {
			System.out.println("共计" + price + "，还差" + (price - pay) + "，请重新输入！");
		}
	}
	
	@Test
	public void test12() {
		
			int i=1;
			int j=++i;//i=2,j=2
			if(j++>3){//i=2,j=3
			++j;
			}else{
			i++;//i=3,j=3
			}
			int k=++j>4?j++:i++;//i=4
			System.out.println(i);
			
	}
	
	@Test
	public void test13() {
		boolean flag = Boolean.TRUE;// true
		int number = 'A';// 65
		float y = 0x123;// 291.0
		long a = 0x123l;// 291
		System.out.println(a);
		int i=1;
		int j=++i;//i=2,j=2
		if(j++>3){//i=2,j=3
		++j;
		}else{
		i++;//i=3,j=3
		}
		int k=++j>4?j++:i++;//i=4
		System.out.println(k);// k= 3
		
		 int u = 0;  
	        for (u++; u++ < 10; u++);  //0-1; 1-2, 3 3-4  4-5, 6 7 8 9 10 11 12
	        System.out.println(++u);  
	}
}